package home

import dominio.Planta
import java.util.List
import org.uqbar.commons.model.CollectionBasedHome
import org.uqbar.commons.utils.Observable

//import personajes.UserException
@Observable
class HomePlantas extends CollectionBasedHome<Planta> {

	new() {
		this.init
	}

	def void init() {
		this.create(25, 50, "tierra", "Shooter")
		this.create(10, 50, "tierra", "Girasol")
		this.create(90, 90, "agua", "Medusa")
		this.create(25, 55, "agua", "Waterproof")
		this.create(20, 40, "agua", "Espora agua")
		this.create(30, 70, "tierra", "Doble Shooter")
		this.create(40, 100, "tierra", "Espinas")
	}

	def void create(Integer puntosDanio, Integer capacidadDefensiva, String tipo, String nombre) {
		var planta = new Planta
		planta.puntosDanio = puntosDanio
		planta.capacidadDefensiva = capacidadDefensiva
		planta.tipo = tipo
		planta.nombre = nombre
		this.create(planta)
	}

	override def getCriterio(Planta example) {
		null
	}

	def List<Planta> getPlantas(){
		allInstances
	}

	def Planta get(String descripcion) {
		plantas.findFirst[planta|planta.descripcion.equals(descripcion)]
	}

	override createExample() {

		//CAMBIAR DESPUES
		new Planta()
	}

	override def Class<Planta> getEntityType() {
		typeof(Planta)
	}
	
	def search(String nombre) {
		allInstances.filter[planta|this.match(nombre, planta.nombre)].toList
	}

	def match(Object expectedValue, Object realValue) {
		if (expectedValue == null) {
			return true
		}
		if (realValue == null) {
			return false
		}
		realValue.toString().toLowerCase().contains(expectedValue.toString().toLowerCase())
	}

//	def buscarPlanta(int valor) {
//		plantas.get(valor)
//	}

}
